package com.whf.android.jar.util.date;

import android.annotation.SuppressLint;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * string 转 年月日
 *
 * @author qf
 * @version 1.0
 */
public class StringToCalendarUtils {

    private final int[] TimeArray = new int[6];
    private int year;
    private int month;
    private int day;

    /**
     * @param dateStr:需要解析的日期字符串:如:"2022-01-27 16:15:31";
     */
    public StringToCalendarUtils(String dateStr) {
        //解析格式，yyyy表示年，MM(大写M)表示月,dd表示天，HH表示小时24小时制，小写的话是12小时制
        // mm，小写，表示分钟，ss表示秒
        @SuppressLint("SimpleDateFormat")
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        try {
            //用parse方法，可能会异常，所以要try-catch
            Date date = format.parse(dateStr);
            if (date == null) {
                return;
            }
            //获取日期实例
            Calendar calendar = Calendar.getInstance();
            //将日历设置为指定的时间
            calendar.setTime(date);
            //获取年
            year = calendar.get(Calendar.YEAR);
            TimeArray[0] = year;
            //这里要注意，月份是从0开始
            month = calendar.get(Calendar.MONTH) + 1;
            TimeArray[1] = month;
            //获取天
            day = calendar.get(Calendar.DAY_OF_MONTH);
            TimeArray[2] = day;
            //获取小时
            int hour = calendar.get(Calendar.HOUR_OF_DAY);
            TimeArray[3] = hour;
            //获取分
            int minute = calendar.get(Calendar.MINUTE);
            TimeArray[4] = minute;
            //获取秒
            int second = calendar.get(Calendar.SECOND);
            TimeArray[5] = second;
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    /**
     * 日
     */
    public String getDay() {
        if (day < 10) {
            return "0" + day;
        }

        return day + "";
    }

    /**
     * 月
     */
    public String getMonth() {
        //月份是0开始的，需要加1；
        int mo = month;
        if (month < 10) {
            return "0" + mo;
        }
        return mo + "";
    }

    /**
     * 年
     */
    public String getYear() {
        return year + "";
    }

    /**
     * 年月日
     */
    public String getYearMonthDay() {
        return year + "-" + getMonth() + "-" + getDay();
    }

    /**
     * 年月日
     */
    public String getYearMonth() {
        return year + "-" + getMonth();
    }

    /**
     * 年月日
     */
    public int[] getTimeArray() {
        return TimeArray;
    }
}
